package com.sub.structure.example;

public class DynamicArrayStack<E> {

    /**
     * 用于保存栈元素的数组
     */
    private DynamicArray<E> array;

    public DynamicArrayStack() {
        this.array = new DynamicArray<>();
    }

    /**
     * 获取栈内元素总个数
     *
     * @return 元素个数
     */
    public int size() {
        return array.size();
    }

    /**
     * 判断栈是否为空
     *
     * @return 栈是否为空
     */
    public boolean isEmpty() {
        return array.isEmpty();
    }


    /**
     * 将新元素压入栈中
     *
     * @param element 新元素
     */
    public void push(E element) {
        array.add(element);
    }


    /**
     * 将栈顶元素弹出
     *
     * @return 栈顶元素
     */
    public E pop() {
        if (isEmpty()) {
            return null;
        }
        return array.remove(size() - 1);
    }

    /**
     * 获取栈顶元素，但不弹出
     *
     * @return 栈顶元素
     */
    public E peek() {
        return array.get(size() - 1);
    }

    @Override
    public String toString() {
        return array.toString();
    }
}